package net.huashitong.ssydt.provider.task.service;


import net.huashitong.ssydt.task.vo.*;

import java.util.List;

/**
 * @author <a href="mailto:yhy23456@163.com">huiyang.yu</a>
 * @since 2018.01.10
 */
public interface TaskService {

    /**
     * 卡包集列表
     *
     * @param inVO
     * @param userId
     * @return
     */
    List<YearCardBagVO> getCardBags(CardBagInVO inVO, String userId);

    /**
     * 我的卡包信息
     *
     * @param userId
     * @return
     */
    CardInfoVO getCardInfo(String userId);

    /**
     * 卡包列表
     *
     * @param userId
     * @param yearMonths
     * @return
     */
    List<CardsOutVO> getCards(String userId, String yearMonths);

    /**
     * 获取未读卡片数量
     *
     * @param userId
     * @return
     */
    Integer getCardsNumber(String userId);

    /**
     * 申请获得卡片
     *
     * @param userId
     * @param questionId
     * @return 如果申请成功返回 <code>true</code>
     */
    boolean postCardsQuestionId(String userId, Long questionId);

    /**
     * 设置卡包为已读
     *
     * @param userId
     * @param cardId
     */
    void putCardsByCardId(String userId, Long cardId);

    /**
     * 设置全部卡包为已读
     *
     * @param userId
     */
    void putCards(String userId);

    /**
     * 勋章列表
     *
     * @param userId
     * @return
     */
    List<TaskMedalVO> getMedals(String userId);

    /**
     * 任务列表
     *
     * @param userId
     * @return
     */
    List<TasksVO> getTasks(String userId);

    /**
     * 领取任务奖励
     *
     * @param userId
     * @param taskRecordId
     */
    void postTasks(String userId, Long taskRecordId);

    Boolean getSign(String userId);

    long postSign(String userId);
}
